package cn.shiwei.feignclient;

import cn.shiwie.domain.User;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;

// 降级类, 需要实现FallbackFactory(泛型为feginclient接口)
@Component // 将这个类注册到spring 中
public class UserFeignClientFallbackFactory implements FallbackFactory<UserFeignClient> {

    // 出现异常会走下面的方法
    @Override
    public UserFeignClient create(Throwable throwable) {
        // 匿名内部类的方式
        return new UserFeignClient() {
            // 该方法就是降级方法
            @Override
            public User getById(Long id) {
                throwable.printStackTrace();
                return new User(-1L, "bug", "服务器出现bug, 正在殴打程序员ing");
            }
        };
    }
}
